﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class 双视口水平布局 : MonoBehaviour
{
    public RectTransform 左视口参考姿态;
    public RectTransform 右视口参考姿态;

    public RectTransform 左视口姿态;
    public RectTransform 右视口姿态;

    public 面对面布局开关 布局开关;

    private bool 同向否;
    

    void Update()
    {
        if(同向否 == 布局开关.开关
           || 左视口参考姿态.rect.width != 左视口姿态.rect.width
           || 左视口参考姿态.rect.height != 左视口姿态.rect.height
           || 左视口参考姿态.rect.x != 左视口姿态.rect.x
           || 左视口参考姿态.rect.y != 左视口姿态.rect.y
           || 左视口参考姿态.anchorMin.x != 左视口姿态.anchorMin.x
           || 左视口参考姿态.anchorMin.y != 左视口姿态.anchorMin.y
           || 左视口参考姿态.anchorMax.x != 左视口姿态.anchorMax.x
           || 左视口参考姿态.anchorMax.y != 左视口姿态.anchorMax.y
           || 右视口参考姿态.rect.width != 右视口姿态.rect.width
           || 右视口参考姿态.rect.height != 右视口姿态.rect.height
           || 右视口参考姿态.rect.x != 右视口姿态.rect.x
           || 右视口参考姿态.rect.y != 右视口姿态.rect.y
           || 右视口参考姿态.anchorMin.x != 右视口姿态.anchorMin.x
           || 右视口参考姿态.anchorMin.y != 右视口姿态.anchorMin.y
           || 右视口参考姿态.anchorMax.x != 右视口姿态.anchorMax.x
           || 右视口参考姿态.anchorMax.y != 右视口姿态.anchorMax.y
           )
        {
            重新布局();
        }
    }

    private void 重新布局()
    {
        //改变RectTransform的top
        左视口姿态.offsetMax = 左视口参考姿态.offsetMax;

        //改变RectTransform的bottom
        左视口姿态.offsetMin = 左视口参考姿态.offsetMin;

        //改变RectTransform的pos
        左视口姿态.anchoredPosition3D = 左视口参考姿态.anchoredPosition3D;
        左视口姿态.anchoredPosition = 左视口参考姿态.anchoredPosition;

        左视口姿态.anchorMin = 左视口参考姿态.anchorMin;
        左视口姿态.anchorMax = 左视口参考姿态.anchorMax;

        //改变RectTransform的top
        右视口姿态.offsetMax = 右视口参考姿态.offsetMax;

        //改变RectTransform的bottom
        右视口姿态.offsetMin = 右视口参考姿态.offsetMin;

        //改变RectTransform的pos
        右视口姿态.anchoredPosition3D = 右视口参考姿态.anchoredPosition3D;
        右视口姿态.anchoredPosition = 右视口参考姿态.anchoredPosition;

        右视口姿态.anchorMin = 右视口参考姿态.anchorMin;
        右视口姿态.anchorMax = 右视口参考姿态.anchorMax;


        if (同向否 == 布局开关.开关)
        {
            同向否 = !布局开关.开关;
            if (同向否)
            {
                左视口姿态.localEulerAngles = new Vector3(0.0f, 0.0f, 0f);
                右视口姿态.localEulerAngles = new Vector3(0.0f, 0.0f, 0f);
            }
            else
            {
                左视口姿态.localEulerAngles = new Vector3(0.0f, 0.0f, -90f);
                右视口姿态.localEulerAngles = new Vector3(0.0f, 0.0f, 90f);
            }
        }

        // 预判修复状态
        if (左视口姿态.localEulerAngles.z ==0 
            && 右视口姿态.localEulerAngles.z  == 0)
        {
            同向否 = true;
        }
        else 
        {
            同向否 = false;
        }


        if (同向否)
        {
            //改变RectTransform的width，height
            右视口姿态.sizeDelta = 右视口参考姿态.sizeDelta;
            左视口姿态.sizeDelta = 左视口参考姿态.sizeDelta;
        }
        else
        {
            //改变RectTransform的width，height
            右视口姿态.sizeDelta = new Vector2(右视口参考姿态.sizeDelta.y, 右视口参考姿态.sizeDelta.x);
            左视口姿态.sizeDelta = new Vector2(左视口参考姿态.sizeDelta.y, 左视口参考姿态.sizeDelta.x);
        }
    }
}
